package com.smmisia.wx.config;

import io.github.briqt.spark4j.SparkClient;
import io.github.briqt.spark4j.constant.SparkApiVersion;
import io.github.briqt.spark4j.model.SparkMessage;
import io.github.briqt.spark4j.model.SparkSyncChatResponse;
import io.github.briqt.spark4j.model.request.SparkRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import jakarta.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

@Component
@Slf4j
public class SparkManager {
    /**
     * AI生成问题的预设条件
     */
    public static final String PRECONDITION = "你是一个专业养鸡的，你叫蟥乏亏，你喜欢沈雪怡，无所不知无所不晓,你回答我的问题字数控制到10个字以内";
    @Resource
    private SparkClient sparkClient;

    /**
     * 向星火AI发送请求      *      * @param content      * @return
     */
    public String sendMesToAIUseXingHuo(final String content) {
        // 消息列表，可以在此列表添加历史对话记录
         List<SparkMessage> messages = new ArrayList<>();
         messages.add(SparkMessage.systemContent(PRECONDITION));
         messages.add(SparkMessage.userContent(content));
        // 构造请求
        SparkRequest sparkRequest = SparkRequest.builder()
                .messages(messages)
        // 模型回答的tokens的最大长度，非必传，默认为2048
                .maxTokens(4096)
        //结果随机性，取值越高随机性越强，即相同的问题得到的不同答案的可能性越高，非必传，取值为[0,1]，默认为0.5
                 .temperature(0.2)                 // 指定请求版本
                 .apiVersion(SparkApiVersion.V3_5)
                 .build();         // 同步调用
         SparkSyncChatResponse chatResponse = sparkClient.chatSync(sparkRequest);
         String responseContent = chatResponse.getContent();
         //log.info("星火AI返回的结果{}", responseContent);
         return responseContent;
    } }
